home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 4
/
Amiga Tools 4.iso
/
tools
/
packer
/
unrar
/
sources
/
amiga-gcc
/
amyunrar.h
next >
Wrap
C/C++ Source or Header
|
1996-02-26
|
3KB
|
125 lines
/****** ***** ******
** ** ** ** ** ** unRAR utility version 1.01
****** ******* ****** ~~~~~~~~~~~~~~~~~~~~~~~~~~~
** ** ** ** ** ** FREE portable version
** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~
Definitions header
UNCOMMENT ONE OF THE INITIAL LINES TO DEFINE YOUR OS TYPE.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/*
In following generic OS definitions you can define the optional
macro SETFILETIME in order to allow UNRAR properly handle the time
format of your operating media.
The first argument of SETFILETIME is FILE *DestFile, and the
second one - pointer to the DOS time structure.
You can disable SETFILETIME by single ';' after the macro name:
#define SETFILETIME(FPtr,DosTimePtr) ;
*/
#ifdef AMIGA
typedef unsigned char UBYTE;
typedef unsigned short UWORD;
typedef unsigned long UDWORD;
typedef long SDWORD;
typedef UBYTE * HPBYTE;
#define MEMALLOC(Size) malloc(Size)
#define MEMFREE(Ptr) free(Ptr)
#define MAKEDIR(Name) mkdir(Name)
#define SETFILETIME(FPtr,DosTimePtr) ;
#define PATHDIV '/'
#define FOPENREADMODE "rb"
#define FOPENWRITEMODE "wb"
#endif
#define UNP_VER 15 /* current version of unpacking method */
/* DOS specific file atributes flags */
#define DOSFA_RDONLY 0x01
#define DOSFA_HIDDEN 0x02
#define DOSFA_SYSTEM 0x04
#define DOSFA_LABEL 0x08
#define DOSFA_DIREC 0x10
#define DOSFA_ARCH 0x20
/* Exit codes */
enum { SUCCESS=0,WARNING=5,FATAL_ERROR=10,CRC_ERROR=10,LOCK_ERROR=5,WRITE_ERROR=10,
OPEN_ERROR=10,USER_ERROR,MEMORY_ERROR=103,USER_BREAK=255 };
/* Status for shutdown */
enum { SD_MEMORY=1,SD_FILES=2 };
/* Status for path comparison */
enum { COMPARE_PATH,NOT_COMPARE_PATH };
/* Archive header flags */
#define MHD_MULT_VOL 1
#define MHD_COMMENT 2
#define MHD_LOCK 4
#define MHD_SOLID 8
/* File header flags */
#define LHD_SPLIT_BEFORE 1
#define LHD_SPLIT_AFTER 2
#define LHD_PASSWORD 4
#define LHD_COMMENT 8
#define SKIP_IF_UNKNOWN 0x4000
#define LONG_BLOCK 0x8000
/* Archive internal block types */
enum { ALL_HEAD=0,MARK_HEAD=0x72,MAIN_HEAD=0x73,FILE_HEAD=0x74,
COMM_HEAD=0x75 };
/* HostOS code */
enum { MS_DOS=0 };
/* Error codes */
enum { EEMPTY = -1,EWRITE = 1,EREAD,EOPEN,ECLOSE,ESEEK,EMEMORY,EARCH };
/* Headers definitions */
struct MarkHeader
{
UBYTE Mark[5];
UWORD HeadSize;
};
struct ArchiveHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UBYTE Reserved[6];
};
struct FileHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UDWORD PackSize;
UDWORD UnpSize;
UBYTE HostOS;
UDWORD FileCRC;
UDWORD FileTime;
UBYTE UnpVer;
UBYTE Method;
UWORD NameSize;
UDWORD FileAttr;
};